#pragma once

#include "number.h"
#include "vector2d.h"

class Matrix2 {
 public:
friend class Vector2D;
  Matrix2() {}
  Matrix2(const Matrix2& other);
  Matrix2(const Vector2D& v1, const Vector2D& v2);
  Matrix2(const ZNumber& m11, const ZNumber& m12, const ZNumber& m21,
          const ZNumber& m22);

  void operator=(const Matrix2& other);

  Matrix2 operator-(const Matrix2& other) const;

  Matrix2 operator+(const Matrix2& other) const;

  Matrix2 operator*(const ZNumber& other) const;

  Matrix2 operator*(const Matrix2& other) const;

  bool operator==(const Matrix2& other) const;

  Matrix2 Transposition() const;
private:
  ZNumber m11_;
  ZNumber m12_;
  ZNumber m21_;
  ZNumber m22_;
};